Guava (Google Core Libraries for Java) একটি ওপেন-সোর্স লাইব্রেরি, যা জাভা ডেভেলপারদের জন্য উন্নত ফিচার সরবরাহ করে। Guava নিয়মিতভাবে আপডেট হয় এবং নতুন ফিচার ও কার্যকরী টুল সংযোজন করে। Guava-এর সাম্প্রতিক ফিচার এবং সংযোজন নিয়ে নিচে আলোচনা করা হলো।
Guava-এর নতুন ফিচার এবং লাইব্রেরি সংযোজন
1. Enhanced Collections API
Guava এর Immutable Collections: Immutable Collections API (যেমন,
ImmutableList,ImmutableSet,ImmutableMap) অপারেশনাল নিরাপত্তা এবং থ্রেড-সেফটি সরবরাহ করে।ImmutableList<String> fruits = ImmutableList.of("Apple", "Banana", "Mango"); ImmutableMap<String, Integer> fruitCount = ImmutableMap.of("Apple", 3, "Banana", 5);Multimap এবং Multiset: একটি কী-তে একাধিক মান সংযুক্ত করার জন্য
Multimapএবং মাল্টি-কাউন্টিংয়ের জন্যMultisetব্যবহার করা হয়।Multimap<String, String> multimap = ArrayListMultimap.create(); multimap.put("Fruit", "Apple"); multimap.put("Fruit", "Banana"); System.out.println(multimap.get("Fruit"));
2. Optional API উন্নতকরণ
Guava-এর Optional API জাভা ৮-এর Optional এর মতোই কার্যকর:
Optional<String> optionalValue = Optional.fromNullable("Guava");
if (optionalValue.isPresent()) {
System.out.println(optionalValue.get());
}
3. New String Utilities
Guava-এর Strings ক্লাসে নতুন ফিচার যোগ হয়েছে, যা স্ট্রিং ম্যানিপুলেশনকে সহজ করে তোলে।
String Joining and Splitting:
String joined = Joiner.on(", ").join("Alice", "Bob", "Charlie"); System.out.println(joined); // Alice, Bob, CharlieString Padding:
String padded = Strings.padStart("123", 5, '0'); System.out.println(padded); // 00123
4. FluentFuture API
Guava-এর FluentFuture হল ListenableFuture এর উন্নত সংস্করণ, যা asynchronous অপারেশনের জন্য:
ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(2));
ListenableFuture<Integer> future = service.submit(() -> 42);
FluentFuture<Integer> fluentFuture = FluentFuture.from(future)
.transform(value -> value * 2, service);
5. Caching API উন্নয়ন
Guava-এর ক্যাশিং টুল CacheBuilder এবং LoadingCache উন্নত হয়েছে:
Custom Expiry Policies:
LoadingCache<String, String> cache = CacheBuilder.newBuilder() .maximumSize(100) .expireAfterWrite(10, TimeUnit.MINUTES) .build(new CacheLoader<String, String>() { @Override public String load(String key) { return "Value for " + key; } });
6. Range API (Enhanced)
Range API জাভার interval পরিচালনা সহজ করে:
Range<Integer> range = Range.closed(1, 10); // 1 থেকে 10 পর্যন্ত
System.out.println(range.contains(5)); // true
System.out.println(range.contains(15)); // false
7. New Concurrency Utilities
RateLimiter: একটি নির্দিষ্ট রেট লিমিট বজায় রাখার জন্য।
RateLimiter rateLimiter = RateLimiter.create(2.0); // প্রতি সেকেন্ডে ২টি রিকোয়েস্ট rateLimiter.acquire();
8. Graph Library
Guava-এর নতুন Graph API গ্রাফ-ভিত্তিক অপারেশনের জন্য ব্যবহৃত হয়।
MutableGraph<String> graph = GraphBuilder.undirected().build();
graph.putEdge("A", "B");
graph.putEdge("B", "C");
System.out.println(graph.adjacentNodes("B")); // [A, C]
9. MoreObjects API
MoreObjects.toStringHelper ক্লাসে উন্নত ফিচার যোগ হয়েছে:
String toString = MoreObjects.toStringHelper("Person")
.add("name", "Alice")
.add("age", 25)
.toString();
System.out.println(toString); // Person{name=Alice, age=25}
Guava নতুন ফিচার ব্যবহারের প্রধান সুবিধাসমূহ
- কোড সংক্ষিপ্ত এবং কার্যকর করা।
- Immutable Collections দিয়ে নিরাপত্তা এবং পারফরম্যান্স নিশ্চিত করা।
- Concurrency এবং Caching এর সহজ ইমপ্লিমেন্টেশন।
- গ্রাফ অপারেশন এবং স্ট্রিং ম্যানিপুলেশনের জন্য উন্নত API।
আপনার প্রয়োজন অনুসারে Guava-এর প্রতিটি ফিচার ব্যবহারের মাধ্যমে উন্নতমানের, থ্রেড-সেফ, এবং কার্যকরী জাভা অ্যাপ্লিকেশন তৈরি করা সম্ভব।
Read more